package com.day1019.snake;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Timer;
import java.util.TimerTask;

public class MyFrame extends JFrame {
    //  事件  鼠标事件（移动/ 点击） 键盘事件（按下/弹起）
    //  内部类
    GamePanel panel = new GamePanel();
    class SnakeMoveTask extends TimerTask{
        @Override
        public void run() {
            //  调用🐍移动方法，  重写绘制
            if (panel.snake.isLive()){
                panel.snake.move();
                panel.snake.eat(panel.food);
                panel.snake.checkOver();
                repaint();
            }
        }
    }
    private Timer timer;//  定时器
    public void initTimer(){
        //  定时器
        timer = new Timer();
        SnakeMoveTask snakeMoveTask = new SnakeMoveTask();
        //  做什么事  每隔500毫秒立即执行SnakeMoveTask   run方法
        timer.schedule(snakeMoveTask,0,200);
    }


    public MyFrame() {
        super.setTitle("贪吃蛇");//设置窗体标题
        super.setSize(650,660); //设置窗体大小
        super.setLocation(600,200); //设置窗体位置
        super.setResizable(false); //设置窗体大小不能改变
        super.add(panel);
        initTimer();
        //  键盘监听事件
        super.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                // 键盘按下 事件
                int keyCode = e.getKeyCode();//  获得键
                panel.snake.changeDirection(keyCode);
            }
        });
        //设置窗体关闭按钮的作用，是正常退出
        super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
